import {allByTypes} from "@/api/system/dict/data";
import {dict_types} from "@/config/business";


const dict = {
  state: {
    dictMap: {},
  },

  mutations: {
    SET_DICT_MAP: (state, map) => {
      state.dictMap = map; // 将传入的字典映射对象设置给state中的dictMap属性
    },
  },
  actions: {
    loadDictionaries({ commit, state }, force = false) {
      if (!force && Object.keys(state.dictMap).length > 0) {
        // 如果不强制加载且字典映射对象已存在，则直接返回解析的Promise对象
        return Promise.resolve();
      }
      return allByTypes(dict_types).then(res => {
        const rows = res.data; // 获取返回结果中的字典数据
        rows.sort((a, b) => a.dictSort - b.dictSort); // 根据字典排序字段对字典数据进行排序
        const map = {}; // 用于存储字典映射的临时对象
        rows.forEach(it => {
          let list = map[it.dictType]; // 获取当前字典类型对应的字典列表
          if (!list) {
            list = [];
            map[it.dictType] = list; // 如果字典列表不存在，则新建并存储到字典映射对象中
          }
          list.push({...it, label: it.dictLabel, value: it.dictValue.match(/^\d+$/) ? +it.dictValue : it.dictValue }); // 将字典数据添加到对应的字典列表中，并给数据添加label和value属性
        })
        commit('SET_DICT_MAP', map);
      })
    },
  }
}

export default dict
